//===========================================================================
/**
 * @file	field_poketch.h
 * @brief	フィールド・ポケッチ間 連絡関数群
 * @author	taya	GAME FREAK Inc.
 *
 */
//===========================================================================
#ifndef __FIELD_POKETCH_H__
#define __FIELD_POKETCH_H__

#include "field_common.h"
#include "field\poketch.h"
#include "system\bmp_menu_list.h"
#include "ev_win.h"

// 下画面アプリ定義
#define SUBLCD_MODE_FIELD_MENU		( 0 )	// メインメニュー
#define SUBLCD_MODE_REPORT_MENU		( 1 )	// レポート画面（セーブ）
#define SUBLCD_MODE_SHOP_MENU		( 2 )	// ショップ画面
#define SUBLCD_MODE_YESNO_MENU		( 3 )	// タッチ選択はい・いいえ画面
#define SUBLCD_MODE_DOWSING_MENU	( 4 )	// ダウジング画面
#define SUBLCD_MODE_NUMSEL_MENU		( 5 )	// 数値入力
#define SUBLCD_MODE_FRIENDDEL_MENU	( 6 )	// ともだちリスト削除画面
#define SUBLCD_MODE_TOUCHSEL_MENU	( 7 )	// タッチ専用選択画面
#define SUBLCD_MODE_UNIONBOARD_MENU	( 8 )	// ユニオンチャットボード画面


enum{
	SUBLCD_SEQ_INIT=0,
	SUBLCD_SEQ_MAIN,
	SUBLCD_SEQ_QUIT_FADE,
	SUBLCD_SEQ_QUIT_FADEWAIT,
	SUBLCD_SEQ_QUITREQ,
	SUBLCD_SEQ_QUITWAIT,
	SUBLCD_SEQ_APP_CHANGE_INIT,
	SUBLCD_SEQ_APP_CHANGE_FADE_WAIT,
};


// 下画面アプリの先頭には必ずSUBLCD_PARAMを持ってくる(TCB_GetWorkで取得するポインタをあてる）
typedef struct {
	int			subseq;		// アプリ内シーケンスワーク
	u32			*scr_work;	// 返答格納用ワーク
	int			nextseq;	// （使うか分からないけど）次のシーケンス予約ワーク

	EV_WIN_WORK	*ev_win;	//
}SUBLCD_PARAM;

extern void Field_SendPoketchInfo( FIELDSYS_WORK* fsys, FIELD_POKETCH_SEND_ID id, u32 value );

extern  void FieldPoketch_Init( FIELDSYS_WORK * fsys );
extern  void FieldPoketch_QuitReq( FIELDSYS_WORK * fsys );
extern  u8 FieldPoketch_QuitWait( FIELDSYS_WORK * fsys );

extern void FieldBeforePoketch_Init( FIELDSYS_WORK * fsys );
extern void FieldBeforePoketch_QuitReq( FIELDSYS_WORK * fsys );
extern BOOL FieldBeforePoketch_QuitWait( FIELDSYS_WORK * fsys );

extern void FieldSubLcdControler_Init( FIELDSYS_WORK *fsys );
extern void FieldSubLcdControler_QuitReq( FIELDSYS_WORK * fsys );
extern BOOL FieldSubLcdControler_QuitWait( FIELDSYS_WORK * fsys );

extern void FieldSubLcdControler_ChangeApp( FIELDSYS_WORK *fsys, int app_no, void *work );
extern  int FieldSubLcdControler_GetNowApp( FIELDSYS_WORK *fsys );
extern void FieldSubLcdControler_ChangeSubSeq( FIELDSYS_WORK *fsys, int app_no, int seq, void *work );
extern  int FieldSubLcdControler_GetSubSeq( FIELDSYS_WORK *fsys );

extern int FieldSubLcdControler_GetSequence( FIELDSYS_WORK *fsys );

EV_WIN_WORK **FieldSubLcdControler_GetEvWin( FIELDSYS_WORK *fsys );

extern void FieldSubLcdControler_YNCallBackSet( FIELDSYS_WORK *fsys, void * func, void * work );

extern void FieldSubLcdControler_FieldMenuEnterSet( FIELDSYS_WORK *fsys );
extern void FieldSubLcdControler_FieldMenuShortcutFlagSet( FIELDSYS_WORK *fsys, int shortcutID );

//=============================================================================================
/**
 * 下画面構築時の初期表示を何にするか設定する（構築前に呼ぶように）
 *
 * @param   fsys
 * @param   application_no	SUBLCD_MODE_FIELD_MENU or SUBLCD_MODE_YESNO_MENU
 *
 * 常駐にしたくてfield_poketch.cから関数実体を fieldsys.c に移動させた　090606 iwasawa
 * ヘッダ定義は使い勝手から、そのままにしている
 */
//=============================================================================================
extern void FieldSubLcdControler_SubApplicationSet( FIELDSYS_WORK *fsys, int application_no );


extern BOOL FieldSublcd_ObjNoTalkCheck( int obj_code );
extern BOOL FieldSublcd_FrontEventCheck( int ev );


#endif